/* Copyright 2018 JDCLOUD.COM

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http:#www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Video-on-Demand
视频点播相关接口

OpenAPI spec version: v1
Contact: 

NOTE: This class is auto generated by the jdcloud code generator program.
*/


#ifndef VodClient_h
#define VodClient_h


#import <JDCloudOCSDKCore/JDCloudOCSDKCore.h>
#import <JDCloudOCSDKVod/VodApiModel.h>

@interface VodClient : NSObject<JDCloudClient>{
    @private
    NSString* _userAgent;
    NSString* _serviceName;
    NSString* _version;
    }

    @property (strong,readonly,nonatomic) NSString* userAgent;

    @property (strong,readonly,nonatomic) NSString* serviceName;

    @property (strong,readonly,nonatomic) NSString* version;

    @property (strong,nonatomic) NSString* contentType;

    @property (strong,nonatomic) Credential* credential;

    @property (strong,nonatomic) SDKEnvironment* sdkEnvironment;

    @property (strong,nonatomic) NSMutableDictionary* customHeader;

    @property  (strong,nonatomic) NSString* httpRequestProtocol;

    -(void) addCustomerHeaderWithKey:(NSString*) key
    value:(NSString*) value;

    -(id)initWithGlobalConfig;

    -(id)initWithCredential:(Credential*)credential
    sdkEnvironment:(SDKEnvironment*)sdkEnvironment;
    -(id)initWithCredential:(Credential*)credential;
    /**
    batchSubmitQualityDetectionJobs sync request
    @param batchSubmitQualityDetectionJobsRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `batchSubmitQualityDetectionJobsResponse` the request response data model
    */
    -(NSDictionary*) batchSubmitQualityDetectionJobsSyncWithRequest:(VodBatchSubmitQualityDetectionJobsRequest*) batchSubmitQualityDetectionJobsRequest;

    -(void)batchSubmitQualityDetectionJobsAsyncWithRequest:(VodBatchSubmitQualityDetectionJobsRequest*) batchSubmitQualityDetectionJobsRequest
    completionHandler:(void(^)(int statusCode,VodBatchSubmitQualityDetectionJobsResponse* _Nullable batchSubmitQualityDetectionJobsResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    deleteTranscodeTemplate sync request
    @param deleteTranscodeTemplateRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `deleteTranscodeTemplateResponse` the request response data model
    */
    -(NSDictionary*) deleteTranscodeTemplateSyncWithRequest:(VodDeleteTranscodeTemplateRequest*) deleteTranscodeTemplateRequest;

    -(void)deleteTranscodeTemplateAsyncWithRequest:(VodDeleteTranscodeTemplateRequest*) deleteTranscodeTemplateRequest
    completionHandler:(void(^)(int statusCode,VodDeleteTranscodeTemplateResponse* _Nullable deleteTranscodeTemplateResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    updateWatermark sync request
    @param updateWatermarkRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `updateWatermarkResponse` the request response data model
    */
    -(NSDictionary*) updateWatermarkSyncWithRequest:(VodUpdateWatermarkRequest*) updateWatermarkRequest;

    -(void)updateWatermarkAsyncWithRequest:(VodUpdateWatermarkRequest*) updateWatermarkRequest
    completionHandler:(void(^)(int statusCode,VodUpdateWatermarkResponse* _Nullable updateWatermarkResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    listDomains sync request
    @param listDomainsRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `listDomainsResponse` the request response data model
    */
    -(NSDictionary*) listDomainsSyncWithRequest:(VodListDomainsRequest*) listDomainsRequest;

    -(void)listDomainsAsyncWithRequest:(VodListDomainsRequest*) listDomainsRequest
    completionHandler:(void(^)(int statusCode,VodListDomainsResponse* _Nullable listDomainsResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    createVideoUploadTask sync request
    @param createVideoUploadTaskRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `createVideoUploadTaskResponse` the request response data model
    */
    -(NSDictionary*) createVideoUploadTaskSyncWithRequest:(VodCreateVideoUploadTaskRequest*) createVideoUploadTaskRequest;

    -(void)createVideoUploadTaskAsyncWithRequest:(VodCreateVideoUploadTaskRequest*) createVideoUploadTaskRequest
    completionHandler:(void(^)(int statusCode,VodCreateVideoUploadTaskResponse* _Nullable createVideoUploadTaskResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    getURLRule sync request
    @param getURLRuleRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `getURLRuleResponse` the request response data model
    */
    -(NSDictionary*) getURLRuleSyncWithRequest:(VodGetURLRuleRequest*) getURLRuleRequest;

    -(void)getURLRuleAsyncWithRequest:(VodGetURLRuleRequest*) getURLRuleRequest
    completionHandler:(void(^)(int statusCode,VodGetURLRuleResponse* _Nullable getURLRuleResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    listHeaders sync request
    @param listHeadersRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `listHeadersResponse` the request response data model
    */
    -(NSDictionary*) listHeadersSyncWithRequest:(VodListHeadersRequest*) listHeadersRequest;

    -(void)listHeadersAsyncWithRequest:(VodListHeadersRequest*) listHeadersRequest
    completionHandler:(void(^)(int statusCode,VodListHeadersResponse* _Nullable listHeadersResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    setURLRule sync request
    @param setURLRuleRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `setURLRuleResponse` the request response data model
    */
    -(NSDictionary*) setURLRuleSyncWithRequest:(VodSetURLRuleRequest*) setURLRuleRequest;

    -(void)setURLRuleAsyncWithRequest:(VodSetURLRuleRequest*) setURLRuleRequest
    completionHandler:(void(^)(int statusCode,VodSetURLRuleResponse* _Nullable setURLRuleResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    getCategoryWithChildren sync request
    @param getCategoryWithChildrenRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `getCategoryWithChildrenResponse` the request response data model
    */
    -(NSDictionary*) getCategoryWithChildrenSyncWithRequest:(VodGetCategoryWithChildrenRequest*) getCategoryWithChildrenRequest;

    -(void)getCategoryWithChildrenAsyncWithRequest:(VodGetCategoryWithChildrenRequest*) getCategoryWithChildrenRequest
    completionHandler:(void(^)(int statusCode,VodGetCategoryWithChildrenResponse* _Nullable getCategoryWithChildrenResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    listTranscodeTemplates sync request
    @param listTranscodeTemplatesRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `listTranscodeTemplatesResponse` the request response data model
    */
    -(NSDictionary*) listTranscodeTemplatesSyncWithRequest:(VodListTranscodeTemplatesRequest*) listTranscodeTemplatesRequest;

    -(void)listTranscodeTemplatesAsyncWithRequest:(VodListTranscodeTemplatesRequest*) listTranscodeTemplatesRequest
    completionHandler:(void(^)(int statusCode,VodListTranscodeTemplatesResponse* _Nullable listTranscodeTemplatesResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    getCategory sync request
    @param getCategoryRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `getCategoryResponse` the request response data model
    */
    -(NSDictionary*) getCategorySyncWithRequest:(VodGetCategoryRequest*) getCategoryRequest;

    -(void)getCategoryAsyncWithRequest:(VodGetCategoryRequest*) getCategoryRequest
    completionHandler:(void(^)(int statusCode,VodGetCategoryResponse* _Nullable getCategoryResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    createDomain sync request
    @param createDomainRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `createDomainResponse` the request response data model
    */
    -(NSDictionary*) createDomainSyncWithRequest:(VodCreateDomainRequest*) createDomainRequest;

    -(void)createDomainAsyncWithRequest:(VodCreateDomainRequest*) createDomainRequest
    completionHandler:(void(^)(int statusCode,VodCreateDomainResponse* _Nullable createDomainResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    deleteWatermark sync request
    @param deleteWatermarkRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `deleteWatermarkResponse` the request response data model
    */
    -(NSDictionary*) deleteWatermarkSyncWithRequest:(VodDeleteWatermarkRequest*) deleteWatermarkRequest;

    -(void)deleteWatermarkAsyncWithRequest:(VodDeleteWatermarkRequest*) deleteWatermarkRequest
    completionHandler:(void(^)(int statusCode,VodDeleteWatermarkResponse* _Nullable deleteWatermarkResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    submitTranscodeJob sync request
    @param submitTranscodeJobRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `submitTranscodeJobResponse` the request response data model
    */
    -(NSDictionary*) submitTranscodeJobSyncWithRequest:(VodSubmitTranscodeJobRequest*) submitTranscodeJobRequest;

    -(void)submitTranscodeJobAsyncWithRequest:(VodSubmitTranscodeJobRequest*) submitTranscodeJobRequest
    completionHandler:(void(^)(int statusCode,VodSubmitTranscodeJobResponse* _Nullable submitTranscodeJobResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    updateTranscodeTemplate sync request
    @param updateTranscodeTemplateRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `updateTranscodeTemplateResponse` the request response data model
    */
    -(NSDictionary*) updateTranscodeTemplateSyncWithRequest:(VodUpdateTranscodeTemplateRequest*) updateTranscodeTemplateRequest;

    -(void)updateTranscodeTemplateAsyncWithRequest:(VodUpdateTranscodeTemplateRequest*) updateTranscodeTemplateRequest
    completionHandler:(void(^)(int statusCode,VodUpdateTranscodeTemplateResponse* _Nullable updateTranscodeTemplateResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    listQualityDetectionTemplates sync request
    @param listQualityDetectionTemplatesRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `listQualityDetectionTemplatesResponse` the request response data model
    */
    -(NSDictionary*) listQualityDetectionTemplatesSyncWithRequest:(VodListQualityDetectionTemplatesRequest*) listQualityDetectionTemplatesRequest;

    -(void)listQualityDetectionTemplatesAsyncWithRequest:(VodListQualityDetectionTemplatesRequest*) listQualityDetectionTemplatesRequest
    completionHandler:(void(^)(int statusCode,VodListQualityDetectionTemplatesResponse* _Nullable listQualityDetectionTemplatesResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    batchUpdateVideos sync request
    @param batchUpdateVideosRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `batchUpdateVideosResponse` the request response data model
    */
    -(NSDictionary*) batchUpdateVideosSyncWithRequest:(VodBatchUpdateVideosRequest*) batchUpdateVideosRequest;

    -(void)batchUpdateVideosAsyncWithRequest:(VodBatchUpdateVideosRequest*) batchUpdateVideosRequest
    completionHandler:(void(^)(int statusCode,VodBatchUpdateVideosResponse* _Nullable batchUpdateVideosResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    createImageUploadTask sync request
    @param createImageUploadTaskRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `createImageUploadTaskResponse` the request response data model
    */
    -(NSDictionary*) createImageUploadTaskSyncWithRequest:(VodCreateImageUploadTaskRequest*) createImageUploadTaskRequest;

    -(void)createImageUploadTaskAsyncWithRequest:(VodCreateImageUploadTaskRequest*) createImageUploadTaskRequest
    completionHandler:(void(^)(int statusCode,VodCreateImageUploadTaskResponse* _Nullable createImageUploadTaskResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    updateQualityDetectionTemplate sync request
    @param updateQualityDetectionTemplateRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `updateQualityDetectionTemplateResponse` the request response data model
    */
    -(NSDictionary*) updateQualityDetectionTemplateSyncWithRequest:(VodUpdateQualityDetectionTemplateRequest*) updateQualityDetectionTemplateRequest;

    -(void)updateQualityDetectionTemplateAsyncWithRequest:(VodUpdateQualityDetectionTemplateRequest*) updateQualityDetectionTemplateRequest
    completionHandler:(void(^)(int statusCode,VodUpdateQualityDetectionTemplateResponse* _Nullable updateQualityDetectionTemplateResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    getDomain sync request
    @param getDomainRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `getDomainResponse` the request response data model
    */
    -(NSDictionary*) getDomainSyncWithRequest:(VodGetDomainRequest*) getDomainRequest;

    -(void)getDomainAsyncWithRequest:(VodGetDomainRequest*) getDomainRequest
    completionHandler:(void(^)(int statusCode,VodGetDomainResponse* _Nullable getDomainResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    getWatermark sync request
    @param getWatermarkRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `getWatermarkResponse` the request response data model
    */
    -(NSDictionary*) getWatermarkSyncWithRequest:(VodGetWatermarkRequest*) getWatermarkRequest;

    -(void)getWatermarkAsyncWithRequest:(VodGetWatermarkRequest*) getWatermarkRequest
    completionHandler:(void(^)(int statusCode,VodGetWatermarkResponse* _Nullable getWatermarkResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    deleteVideoStreams sync request
    @param deleteVideoStreamsRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `deleteVideoStreamsResponse` the request response data model
    */
    -(NSDictionary*) deleteVideoStreamsSyncWithRequest:(VodDeleteVideoStreamsRequest*) deleteVideoStreamsRequest;

    -(void)deleteVideoStreamsAsyncWithRequest:(VodDeleteVideoStreamsRequest*) deleteVideoStreamsRequest
    completionHandler:(void(^)(int statusCode,VodDeleteVideoStreamsResponse* _Nullable deleteVideoStreamsResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    batchSubmitTranscodeJobs sync request
    @param batchSubmitTranscodeJobsRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `batchSubmitTranscodeJobsResponse` the request response data model
    */
    -(NSDictionary*) batchSubmitTranscodeJobsSyncWithRequest:(VodBatchSubmitTranscodeJobsRequest*) batchSubmitTranscodeJobsRequest;

    -(void)batchSubmitTranscodeJobsAsyncWithRequest:(VodBatchSubmitTranscodeJobsRequest*) batchSubmitTranscodeJobsRequest
    completionHandler:(void(^)(int statusCode,VodBatchSubmitTranscodeJobsResponse* _Nullable batchSubmitTranscodeJobsResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    setIPRule sync request
    @param setIPRuleRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `setIPRuleResponse` the request response data model
    */
    -(NSDictionary*) setIPRuleSyncWithRequest:(VodSetIPRuleRequest*) setIPRuleRequest;

    -(void)setIPRuleAsyncWithRequest:(VodSetIPRuleRequest*) setIPRuleRequest
    completionHandler:(void(^)(int statusCode,VodSetIPRuleResponse* _Nullable setIPRuleResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    updateVideo sync request
    @param updateVideoRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `updateVideoResponse` the request response data model
    */
    -(NSDictionary*) updateVideoSyncWithRequest:(VodUpdateVideoRequest*) updateVideoRequest;

    -(void)updateVideoAsyncWithRequest:(VodUpdateVideoRequest*) updateVideoRequest
    completionHandler:(void(^)(int statusCode,VodUpdateVideoResponse* _Nullable updateVideoResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    setDefaultDomain sync request
    @param setDefaultDomainRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `setDefaultDomainResponse` the request response data model
    */
    -(NSDictionary*) setDefaultDomainSyncWithRequest:(VodSetDefaultDomainRequest*) setDefaultDomainRequest;

    -(void)setDefaultDomainAsyncWithRequest:(VodSetDefaultDomainRequest*) setDefaultDomainRequest
    completionHandler:(void(^)(int statusCode,VodSetDefaultDomainResponse* _Nullable setDefaultDomainResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    getTranscodeTemplate sync request
    @param getTranscodeTemplateRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `getTranscodeTemplateResponse` the request response data model
    */
    -(NSDictionary*) getTranscodeTemplateSyncWithRequest:(VodGetTranscodeTemplateRequest*) getTranscodeTemplateRequest;

    -(void)getTranscodeTemplateAsyncWithRequest:(VodGetTranscodeTemplateRequest*) getTranscodeTemplateRequest
    completionHandler:(void(^)(int statusCode,VodGetTranscodeTemplateResponse* _Nullable getTranscodeTemplateResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    deleteCategory sync request
    @param deleteCategoryRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `deleteCategoryResponse` the request response data model
    */
    -(NSDictionary*) deleteCategorySyncWithRequest:(VodDeleteCategoryRequest*) deleteCategoryRequest;

    -(void)deleteCategoryAsyncWithRequest:(VodDeleteCategoryRequest*) deleteCategoryRequest
    completionHandler:(void(^)(int statusCode,VodDeleteCategoryResponse* _Nullable deleteCategoryResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    getVideoPlayInfo sync request
    @param getVideoPlayInfoRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `getVideoPlayInfoResponse` the request response data model
    */
    -(NSDictionary*) getVideoPlayInfoSyncWithRequest:(VodGetVideoPlayInfoRequest*) getVideoPlayInfoRequest;

    -(void)getVideoPlayInfoAsyncWithRequest:(VodGetVideoPlayInfoRequest*) getVideoPlayInfoRequest
    completionHandler:(void(^)(int statusCode,VodGetVideoPlayInfoResponse* _Nullable getVideoPlayInfoResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    deleteHeader sync request
    @param deleteHeaderRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `deleteHeaderResponse` the request response data model
    */
    -(NSDictionary*) deleteHeaderSyncWithRequest:(VodDeleteHeaderRequest*) deleteHeaderRequest;

    -(void)deleteHeaderAsyncWithRequest:(VodDeleteHeaderRequest*) deleteHeaderRequest
    completionHandler:(void(^)(int statusCode,VodDeleteHeaderResponse* _Nullable deleteHeaderResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    updateCategory sync request
    @param updateCategoryRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `updateCategoryResponse` the request response data model
    */
    -(NSDictionary*) updateCategorySyncWithRequest:(VodUpdateCategoryRequest*) updateCategoryRequest;

    -(void)updateCategoryAsyncWithRequest:(VodUpdateCategoryRequest*) updateCategoryRequest
    completionHandler:(void(^)(int statusCode,VodUpdateCategoryResponse* _Nullable updateCategoryResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    setRefererRule sync request
    @param setRefererRuleRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `setRefererRuleResponse` the request response data model
    */
    -(NSDictionary*) setRefererRuleSyncWithRequest:(VodSetRefererRuleRequest*) setRefererRuleRequest;

    -(void)setRefererRuleAsyncWithRequest:(VodSetRefererRuleRequest*) setRefererRuleRequest
    completionHandler:(void(^)(int statusCode,VodSetRefererRuleResponse* _Nullable setRefererRuleResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    createQualityDetectionTemplate sync request
    @param createQualityDetectionTemplateRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `createQualityDetectionTemplateResponse` the request response data model
    */
    -(NSDictionary*) createQualityDetectionTemplateSyncWithRequest:(VodCreateQualityDetectionTemplateRequest*) createQualityDetectionTemplateRequest;

    -(void)createQualityDetectionTemplateAsyncWithRequest:(VodCreateQualityDetectionTemplateRequest*) createQualityDetectionTemplateRequest
    completionHandler:(void(^)(int statusCode,VodCreateQualityDetectionTemplateResponse* _Nullable createQualityDetectionTemplateResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    getRefererRule sync request
    @param getRefererRuleRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `getRefererRuleResponse` the request response data model
    */
    -(NSDictionary*) getRefererRuleSyncWithRequest:(VodGetRefererRuleRequest*) getRefererRuleRequest;

    -(void)getRefererRuleAsyncWithRequest:(VodGetRefererRuleRequest*) getRefererRuleRequest
    completionHandler:(void(^)(int statusCode,VodGetRefererRuleResponse* _Nullable getRefererRuleResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    getQualityDetectionTemplate sync request
    @param getQualityDetectionTemplateRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `getQualityDetectionTemplateResponse` the request response data model
    */
    -(NSDictionary*) getQualityDetectionTemplateSyncWithRequest:(VodGetQualityDetectionTemplateRequest*) getQualityDetectionTemplateRequest;

    -(void)getQualityDetectionTemplateAsyncWithRequest:(VodGetQualityDetectionTemplateRequest*) getQualityDetectionTemplateRequest
    completionHandler:(void(^)(int statusCode,VodGetQualityDetectionTemplateResponse* _Nullable getQualityDetectionTemplateResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    deleteDomain sync request
    @param deleteDomainRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `deleteDomainResponse` the request response data model
    */
    -(NSDictionary*) deleteDomainSyncWithRequest:(VodDeleteDomainRequest*) deleteDomainRequest;

    -(void)deleteDomainAsyncWithRequest:(VodDeleteDomainRequest*) deleteDomainRequest
    completionHandler:(void(^)(int statusCode,VodDeleteDomainResponse* _Nullable deleteDomainResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    createCategory sync request
    @param createCategoryRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `createCategoryResponse` the request response data model
    */
    -(NSDictionary*) createCategorySyncWithRequest:(VodCreateCategoryRequest*) createCategoryRequest;

    -(void)createCategoryAsyncWithRequest:(VodCreateCategoryRequest*) createCategoryRequest
    completionHandler:(void(^)(int statusCode,VodCreateCategoryResponse* _Nullable createCategoryResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    listWatermarks sync request
    @param listWatermarksRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `listWatermarksResponse` the request response data model
    */
    -(NSDictionary*) listWatermarksSyncWithRequest:(VodListWatermarksRequest*) listWatermarksRequest;

    -(void)listWatermarksAsyncWithRequest:(VodListWatermarksRequest*) listWatermarksRequest
    completionHandler:(void(^)(int statusCode,VodListWatermarksResponse* _Nullable listWatermarksResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    getHttpSsl sync request
    @param getHttpSslRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `getHttpSslResponse` the request response data model
    */
    -(NSDictionary*) getHttpSslSyncWithRequest:(VodGetHttpSslRequest*) getHttpSslRequest;

    -(void)getHttpSslAsyncWithRequest:(VodGetHttpSslRequest*) getHttpSslRequest
    completionHandler:(void(^)(int statusCode,VodGetHttpSslResponse* _Nullable getHttpSslResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    setHeader sync request
    @param setHeaderRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `setHeaderResponse` the request response data model
    */
    -(NSDictionary*) setHeaderSyncWithRequest:(VodSetHeaderRequest*) setHeaderRequest;

    -(void)setHeaderAsyncWithRequest:(VodSetHeaderRequest*) setHeaderRequest
    completionHandler:(void(^)(int statusCode,VodSetHeaderResponse* _Nullable setHeaderResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    refreshVideoUploadTask sync request
    @param refreshVideoUploadTaskRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `refreshVideoUploadTaskResponse` the request response data model
    */
    -(NSDictionary*) refreshVideoUploadTaskSyncWithRequest:(VodRefreshVideoUploadTaskRequest*) refreshVideoUploadTaskRequest;

    -(void)refreshVideoUploadTaskAsyncWithRequest:(VodRefreshVideoUploadTaskRequest*) refreshVideoUploadTaskRequest
    completionHandler:(void(^)(int statusCode,VodRefreshVideoUploadTaskResponse* _Nullable refreshVideoUploadTaskResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    getVideo sync request
    @param getVideoRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `getVideoResponse` the request response data model
    */
    -(NSDictionary*) getVideoSyncWithRequest:(VodGetVideoRequest*) getVideoRequest;

    -(void)getVideoAsyncWithRequest:(VodGetVideoRequest*) getVideoRequest
    completionHandler:(void(^)(int statusCode,VodGetVideoResponse* _Nullable getVideoResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    listVideos sync request
    @param listVideosRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `listVideosResponse` the request response data model
    */
    -(NSDictionary*) listVideosSyncWithRequest:(VodListVideosRequest*) listVideosRequest;

    -(void)listVideosAsyncWithRequest:(VodListVideosRequest*) listVideosRequest
    completionHandler:(void(^)(int statusCode,VodListVideosResponse* _Nullable listVideosResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    createWatermark sync request
    @param createWatermarkRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `createWatermarkResponse` the request response data model
    */
    -(NSDictionary*) createWatermarkSyncWithRequest:(VodCreateWatermarkRequest*) createWatermarkRequest;

    -(void)createWatermarkAsyncWithRequest:(VodCreateWatermarkRequest*) createWatermarkRequest
    completionHandler:(void(^)(int statusCode,VodCreateWatermarkResponse* _Nullable createWatermarkResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    deleteVideo sync request
    @param deleteVideoRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `deleteVideoResponse` the request response data model
    */
    -(NSDictionary*) deleteVideoSyncWithRequest:(VodDeleteVideoRequest*) deleteVideoRequest;

    -(void)deleteVideoAsyncWithRequest:(VodDeleteVideoRequest*) deleteVideoRequest
    completionHandler:(void(^)(int statusCode,VodDeleteVideoResponse* _Nullable deleteVideoResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    submitQualityDetectionJob sync request
    @param submitQualityDetectionJobRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `submitQualityDetectionJobResponse` the request response data model
    */
    -(NSDictionary*) submitQualityDetectionJobSyncWithRequest:(VodSubmitQualityDetectionJobRequest*) submitQualityDetectionJobRequest;

    -(void)submitQualityDetectionJobAsyncWithRequest:(VodSubmitQualityDetectionJobRequest*) submitQualityDetectionJobRequest
    completionHandler:(void(^)(int statusCode,VodSubmitQualityDetectionJobResponse* _Nullable submitQualityDetectionJobResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    getIPRule sync request
    @param getIPRuleRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `getIPRuleResponse` the request response data model
    */
    -(NSDictionary*) getIPRuleSyncWithRequest:(VodGetIPRuleRequest*) getIPRuleRequest;

    -(void)getIPRuleAsyncWithRequest:(VodGetIPRuleRequest*) getIPRuleRequest
    completionHandler:(void(^)(int statusCode,VodGetIPRuleResponse* _Nullable getIPRuleResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    enableDomain sync request
    @param enableDomainRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `enableDomainResponse` the request response data model
    */
    -(NSDictionary*) enableDomainSyncWithRequest:(VodEnableDomainRequest*) enableDomainRequest;

    -(void)enableDomainAsyncWithRequest:(VodEnableDomainRequest*) enableDomainRequest
    completionHandler:(void(^)(int statusCode,VodEnableDomainResponse* _Nullable enableDomainResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    setHttpSsl sync request
    @param setHttpSslRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `setHttpSslResponse` the request response data model
    */
    -(NSDictionary*) setHttpSslSyncWithRequest:(VodSetHttpSslRequest*) setHttpSslRequest;

    -(void)setHttpSslAsyncWithRequest:(VodSetHttpSslRequest*) setHttpSslRequest
    completionHandler:(void(^)(int statusCode,VodSetHttpSslResponse* _Nullable setHttpSslResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    createTranscodeTemplate sync request
    @param createTranscodeTemplateRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `createTranscodeTemplateResponse` the request response data model
    */
    -(NSDictionary*) createTranscodeTemplateSyncWithRequest:(VodCreateTranscodeTemplateRequest*) createTranscodeTemplateRequest;

    -(void)createTranscodeTemplateAsyncWithRequest:(VodCreateTranscodeTemplateRequest*) createTranscodeTemplateRequest
    completionHandler:(void(^)(int statusCode,VodCreateTranscodeTemplateResponse* _Nullable createTranscodeTemplateResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    listCategories sync request
    @param listCategoriesRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `listCategoriesResponse` the request response data model
    */
    -(NSDictionary*) listCategoriesSyncWithRequest:(VodListCategoriesRequest*) listCategoriesRequest;

    -(void)listCategoriesAsyncWithRequest:(VodListCategoriesRequest*) listCategoriesRequest
    completionHandler:(void(^)(int statusCode,VodListCategoriesResponse* _Nullable listCategoriesResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    batchDeleteVideos sync request
    @param batchDeleteVideosRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `batchDeleteVideosResponse` the request response data model
    */
    -(NSDictionary*) batchDeleteVideosSyncWithRequest:(VodBatchDeleteVideosRequest*) batchDeleteVideosRequest;

    -(void)batchDeleteVideosAsyncWithRequest:(VodBatchDeleteVideosRequest*) batchDeleteVideosRequest
    completionHandler:(void(^)(int statusCode,VodBatchDeleteVideosResponse* _Nullable batchDeleteVideosResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    disableDomain sync request
    @param disableDomainRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `disableDomainResponse` the request response data model
    */
    -(NSDictionary*) disableDomainSyncWithRequest:(VodDisableDomainRequest*) disableDomainRequest;

    -(void)disableDomainAsyncWithRequest:(VodDisableDomainRequest*) disableDomainRequest
    completionHandler:(void(^)(int statusCode,VodDisableDomainResponse* _Nullable disableDomainResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    deleteQualityDetectionTemplate sync request
    @param deleteQualityDetectionTemplateRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `deleteQualityDetectionTemplateResponse` the request response data model
    */
    -(NSDictionary*) deleteQualityDetectionTemplateSyncWithRequest:(VodDeleteQualityDetectionTemplateRequest*) deleteQualityDetectionTemplateRequest;

    -(void)deleteQualityDetectionTemplateAsyncWithRequest:(VodDeleteQualityDetectionTemplateRequest*) deleteQualityDetectionTemplateRequest
    completionHandler:(void(^)(int statusCode,VodDeleteQualityDetectionTemplateResponse* _Nullable deleteQualityDetectionTemplateResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;

    /**
    vod common sync request
    @param  jdcloudDataRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
    */
    -(NSDictionary*) vodCommonSyncWithRequest:(JDCloudDataRequest*) jdcloudDataRequest
                                           url:(NSString*) url
                                        method:(NSString*) method;

    -(void)vodCommonAsyncWithRequest:(JDCloudDataRequest*) jdcloudDataRequest
                                  url:(NSString*) url
                               method:(NSString*) method
                    completionHandler:(void(^)(int statusCode, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;

    @end


    #endif /* VodClient_h */
